#ifndef BEHAVIOR_TREE_WHILE_DO_ELSE_POLICY_H
#define BEHAVIOR_TREE_WHILE_DO_ELSE_POLICY_H

#include "behavior_tree_policy.h"
namespace policy
{
class BehaviorTreeWhileDoElsePolicy: public BehaviorTreePolicy
{
public:
    explicit BehaviorTreeWhileDoElsePolicy(const std::string &name);
    ~BehaviorTreeWhileDoElsePolicy() override;

    /**
     * @brief:  设置循环条件判断
     * @author: sherlock_lht
     */
    bool setWhileConditionTask(const task::AbstractTaskConstPtr &task);
    bool setWhileConditionPolicy(const AbstractPolicyConstPtr &policy);

    /**
     * @brief:  设置then task/policy
     * @author: sherlock_lht
     */
    bool setThenTask(const task::AbstractTaskConstPtr &task);
    bool setThenPolicy(const AbstractPolicyConstPtr &policy);

    /**
     * @brief:  设置else task/policy
     * @author: sherlock_lht
     */
    bool setElseTask(const task::AbstractTaskConstPtr &task);
    bool setElsePolicy(const AbstractPolicyConstPtr &policy);
};

}

#endif //BEHAVIOR_TREE_WHILE_DO_ELSE_POLICY_H
